package com.sz.biz.pay.account.service;


import com.sz.biz.pay.account.dto.MemberTransactionDto;
import com.sz.biz.pay.account.dto.OrderPaymentDto;
import com.sz.biz.pay.account.entity.Transaction;
import com.sz.biz.pay.transfer.dto.NotifyDataDto;
import com.sz.common.base.dto.QResultDto;
import com.sz.common.base.dto.ResultDto;

import java.util.Map;

/**
 * Function: TODO: ADD FUNCTION <br>
 * Author: HeWenBo <br>
 * Date: 2017-12-04 19:07:00
 */
public interface PaymentService {

    /**
     * 搜索billNo查找交易信息
     *
     * @param billNo
     * @return map
     */
    Map<String, Object> findTransactionByBillNo(String billNo);

    /**
     * 搜索custAcctId查找交易信息列表
     *
     * @param id
     * @param q
     * @param pageIndex
     * @param pageSize
     * @param beginDate
     * @param endDate
     * @return list
     */
    QResultDto findTransactionList(String id, String q, int pageIndex, int pageSize, String beginDate, String endDate, String tranType);

    /**
     * 计算手续费
     *
     * @param memberTransactionDto
     * @return
     */
    ResultDto transactionHandFee(MemberTransactionDto memberTransactionDto);

    /**
     * 回调支付完成
     *
     * @param notifyDataDto
     * @return
     */
    ResultDto transactionPay(NotifyDataDto notifyDataDto);

    /**
     * 查询第三方支付ID
     *
     * @param outCustomerId
     * @param inCustomerId
     * @return
     */
    ResultDto findThirdPayIdByCustomerId(int outCustomerId ,int inCustomerId);

    /**
     * 订单支付
     *
     * @param orderPaymentDto
     * @return
     */
    ResultDto orderPayment(OrderPaymentDto orderPaymentDto);

    /**
     * 代理复核
     *
     * @param
     * @return
     */
    String agentRecheck(Transaction transaction);

    /**
     * 查找交易出入金信息列表
     *
     * @param id
     * @param q
     * @param pageIndex
     * @param pageSize
     * @param beginDate
     * @param endDate
     * @return list
     */
    ResultDto findTransaction(String id, String q, int pageIndex, int pageSize, String beginDate, String endDate, String tranType);

    /**
     * 查询交易详情
     *
     * @param orderNo
     * @return
     */
    ResultDto findByOrderNo(String orderNo);
}

